var game = document.getElementById('game');
game.width = screen.availWidth;
game.height = 720;
var ctx = game.getContext('2d');
// ctx.fillText('pang宝臭sb', 100, 200);
// var bgImg = new Image();
// bgImg.src = '../img/bg.jpg';
// bgImg.onload = function() {
//     ctx.drawImage(bgImg,0,0);
// }
// var bgImg1 = new Image();
// bgImg1.src = './img/h_L0.png';
// bgImg1.onload = function() {
//     ctx.drawImage(bgImg1,200,500);
// }


//定义一个开始游戏的方法
var bg = null;
var p1 = null; //代表第1个玩家
var audioPool = null; //音频的资源池
var enemyList = [];   //创建一个集合，用于装敌人小兵的对象
function addEnemy() { //用于新增敌人小兵
	if (enemyList.length < 10) {
		var count = 10 - enemyList.length;  //计算一下差多少个敌人
		for (var i = 0; i < count; i++) {
			var e = new Enemy();
			enemyList.push(e);
		}
	}
}

function startGame() {
	//调用方法，创建音频对象的资源池
	audioPool = createAudioPool();
	bg = new Background();
	p1 = new Hero();
	//设置屏幕刷新（定时器）
	setInterval(() => {
		addEnemy();  //屏幕刷新时候添加敌人小兵
		bg.draw(ctx);
		p1.draw(ctx);
		//画小兵，遍历enemyList敌人小兵的集合，然后一个一个的画出来
		//要求：倒序遍历
		for (var i = enemyList.length - 1; i >= 0; i--) {
			enemyList[i].draw(ctx);
		}

	}, 20);
}

// 我希望按下键以后让它动起来
var keySet = new Set();
//键盘按下的时候 
document.onkeydown = function (event) {
	keySet.add(event.keyCode);
	if (event.keyCode == 74 && p1.isAttack == false) {
		//说明在攻击
		p1.isAttack = true;
		//播放音乐，从资源池里面拿一个音频标签
		var audio = audioPool.pop();
		audio.src = "./music/attack04.mp3";
		audio.play();
		//当音乐播放完成，使用完了以后，再把它放回去
		audioPool.unshift(audio);
		checkHeroAndEnemyCrash();
	} else if (event.keyCode == 75) {
		p1.isBoom = true;
		var audio = audioPool.pop();
		audio.src = "./music/attack3.mp3";
		audio.play();
		//当音乐播放完成，使用完了以后，再把它放回去
		audioPool.unshift(audio);

		var timerId = setInterval(() => {
			if (p1.isBoom == true) {
				checkHeroAndEnemyCrash();
			} else {
				clearInterval(timerId);
			}
		}, 200);
	}
}
//键盘松开的时候
document.onkeyup = function (event) {
	keySet.delete(event.keyCode);

}



/**
 * 编写代码，创建audio的资源池
 * @returns {Array<Audio>} 返回音频的资源池
 */
function createAudioPool() {
	var list = [];
	//池子里面一次性创建10个Audio
	for (var i = 0; i < 10; i++) {
		var audio = document.createElement("audio");
		list.push(audio);
	}
	return list;
}
//封装一个方法，用于检测2个矩形是否有发生相关碰撞的情况
// true代表两个物体碰撞到了，false代表2个物体没有碰撞
function checkCrash(a, b) {
	if (a.x + a.width < b.x ||
		b.x + b.width < a.x ||
		a.y + a.height < b.y ||
		b.y + b.height < a.y) {
		return false;
	}
	else {
		return true;
	}
}
function checkHeroAndEnemyCrash() {
	for (var i = enemyList.length - 1; i >= 0; i--) {
		var e = enemyList[i];
		var result = checkCrash(e, p1);
		if (result == true) {
			e.hp -= parseInt(Math.random() * 20) + 10;
			if (e.hp <= 0) {
				e.hp = 0;
				enemyList.splice(i, 1);
				p1.mp += parseInt(Math.random() * 20);
			}
		}
	}

}

